Over the past several years, the Internet and other computer networks have become increasingly accepted and popular as conduits for conducting business and performing other sensitive transactions. For example, online shopping, banking, and security trading over the Internet, all of which can involve the transmission of sensitive, personal, and financial information, have become commonplace.
As activities requiring sensitive transactions have become more commonplace, so too have security concerns surrounding these transactions. In response, several security features have been implemented to secure sensitive transactions over the Internet and other computer networks. For example, a Secure Sockets Layer (SSL) has been developed to establish a secure communications link or connection between a client and a server. This secure connection is established using a public key cryptography technique, whereby a secret key for the session is exchanged as the server transmits its public encryption key to the client, and the client randomly generates a private key that is encrypted using the public key and transmitted back to the server.
Communications over computer networks using a variety of protocols can be made more secure using SSL. One example of such a communications protocol that occurs via the World Wide Web (WWW) is the Hypertext Transport Protocol (HTTP), which can be accomplished over SSL using HTTP over SSL, which is also referred to as Hypertext Transport Protocol Secure (HTTPS). Similarly, other communications protocols can be used over SSL, such as the File Transfer Protocol (FTP), the Simple Mail Transfer Protocol (SMTP), and others. Frequently, communications over SSL use a different Transmission Control Protocol/Internet Protocol (TCP/IP) port than non-secure or unencrypted communications. For example, standard HTTP communications use port 80, while HTTPS communications often use port 443.
Some applications and servers, however, do not follow the convention of using different communications channels (e.g., communicating via different TCP/IP ports) for encrypted and unencrypted communications. For example, some servers that service incoming requests, such as structured query language (SQL) requests, use the same communications channel (e.g., TCP/IP port 80) for both unencrypted and encrypted communications (e.g., communications over SSL).
One example of such a server that uses the same communications channel for both unencrypted communications and encrypted communications over SSL is the SQL server available from Microsoft Corp (referred to herein as the MS SQL Server). The MS SQL Server (which is used generically herein as referring to MS SQL Server 2000, or other comparable versions of the MS SQL Server) includes the SSL handshake as part of the standard Tabular Data Stream (TDS) handshake used by the server. Because this SSL handshake is packaged within the proprietary TDS handshake of the server, however, standard SSL software libraries cannot be used to service the SSL communications transmitted to and received from the server.
Therefore, it is desirable to provide a technique that allows standard libraries to service encrypted communications, such as SSL communications, transmitted to and received from a server that packages the encryption handshake protocol associated with the encrypted communication in a proprietary handshake protocol.